-
Notifications
You must be signed in to change notification settings - Fork 190
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MakePrimitiveRef generic so that UNDEFINED_REFERENCE can be Reference<undefined> rather than Reference<unknown> #1481
Conversation
…<undefined> rather than Reference<unknown>
@@ -56,8 +56,8 @@ class ReferenceImpl<T = unknown> implements Reference<T> { | |||
} | |||
} | |||
|
|||
export function createPrimitiveRef(value: unknown): Reference { | |||
const ref = new ReferenceImpl(UNBOUND); | |||
export function createPrimitiveRef<T = unknown>(value: T): Reference<T> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don’t think you need = unknown
here.
I wonder if you will catch any unexpected/unintended usages if you do T extends string | number | boolean | null | undefined
(we may have a type alias for that already somewhere)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don’t think you need = unknown here.
I will try this out in a followup PR!
Since it's so hard to iterate between this PR and ember, I want try as isolated changes at a time as possible
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure. The = unknown
is redundant regardless of whether the constraints work out or not. As far as I know it would always have inferred (to unknown in the worst case). For types/interface sometimes you need to say = unknown
to be able to reference the type more easily, but I don’t think that’s needed in a function parameter position
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we may have a type alias for that already somewhere
looks like it's just duplicated everywhere -- probably good for better errors, tbh
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ran in to this when trying to update glimmer-vm in ember-source, here: emberjs/ember.js#20561
in particular:
this should be resolved after this PR